<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
  </head>

  <body>
    <script>
      /*
            call方法
                Function.prototype.call

                作用：
                    1. 指定一个函数的this，修改函数的this指向
                    2. 调用这个函数

                函数.call(函数在执行过程中的this,函数所需的参数...)
        */

      // function fn(a, b) {
      //   console.log(this);
      //   console.log(a, b);
      //   return a + b
      // }

      // fn(10, 20) //window{} 10,20

      // // 证明了， call， 可以修改this指向， 可以调用函数
      // fn.call({
      //   name: '狗蛋'
      // }, 100, 200) //{name:'狗蛋'} 100,200



      // call的使用场景1
      // 借用构造函数

      function Person(name, age, gender) {
        this.name = name
        this.age = age
        this.gender = gender
      }


      // 借用
      function Student(name, age, gender, number) {
        Person.call(this, name, age, gender)
        this.number = number
      }

      let s1 = new Student('狗蛋', 16, '男', 'A001')
    </script>
  </body>

</html>